#ifndef ALIYUN_DEFAULT_ACS_CLIENT_H_
#define ALIYUN_DEFAULT_ACS_CLIENT_H_

#include "core/i_acs_client.h"

namespace aliyun {

class IClientProfile;
class ISigner;
class Credential;

class DefaultAcsClient : public IAcsClient {
public:
  DefaultAcsClient(IClientProfile *i_client_profile);

  virtual bool GetAcsResponse(AcsRequest *request, AcsResponse *response, ISigner *i_signer = NULL,
    const Credential* credential = NULL, bool auto_retry = true, int max_retry_number = 3);

private:
  IClientProfile *i_client_profile_weak_ptr_;
};

} // namespace aliyun {

#endif // #ifndef ALIYUN_DEFAULT_ACS_CLIENT_H_

// end of file
